package com.liyong.pullorder.sdk.client.auth;


import org.springframework.http.HttpHeaders;

import java.util.Map;

/**
 * @author 葡萄味的萝卜
 * @date 2025/10/21 10:55
 * 统一认证策略接口
 * 核心作用：抽象多种认证方式，实现可插拔的认证组件
 * 设计模式：策略模式，支持快速扩展新的认证协议
 *
 * 已支持认证方式：
 * - OAuth2.0：用于华为、荣耀等现代API平台
 * - API Key：用于网店管家ERP、浙江移动等传统系统
 * - Basic Auth：用于部分内部系统
 *
 * 效能提升：新平台认证接入从3-5天缩短至2小时
 */
public interface  AuthStrategy {
    /**
     * 获取认证类型标识
     * 用于配置映射：pull.order.sdk.platforms.{platform}.auth.type
     */
    String getType();

    /**
     * 检查是否支持指定认证类型
     * 实现自动路由：根据配置自动选择认证策略
     */
    boolean supports(String authType);

    /**
     * 应用认证信息到请求头
     * 统一入口：所有平台认证逻辑收敛至此
     *
     * @param headers HTTP请求头 - 用于添加认证信息
     * @param authConfig 认证配置 - 从配置文件动态读取
     */
    void applyAuth(HttpHeaders headers, Map<String, String> authConfig);
}
